Ensure that decision-making data is accessible at a glance.
Use size, position, and color to draw attention to key metrics.
4. Balance Timely Data against Speed of App
Minimize data operations within app session
Maximize user’s ability to see timely data
What does “Timely Data” mean for you projects?
Dashboard Design Principles
5. Consistency
Consistent formatting, fonts, and color schemes.
Consistent types of charts for similar types of data to foster familiarity.
6. Accessibility
Ensure the dashboard is easy to use, even for individuals who may not be highly technical.
Use color contrast and design elements that are accessible to all users, including those with visual impairments.
Provide tooltips or brief explanations for more complex metrics.
Dashboard Design Principles
Resources
“The Visual Display of Quantitative Information” by Edward Tufte A classic, emphasizing clarity, precision, and efficiency in visualizing data.
“Information Dashboard Design: Displaying Data for At-a-Glance Monitoring” by Stephen Few Guidelines for creating clear and actionable dashboards that allow users to quickly grasp insights.
{timevis}: Allows you to build interactive timelines in Shiny or Quarto. It is based on the ‘vis.js’ Timeline JavaScript library.
Break
Block 5: CRUD Apps in R and Shiny
2:45 PM - 3:45 PM
CRUD Apps in R and Shiny
CRUD stands for Create, Read, Update, and Delete. A CRUD app allows users to view and manage data.
Start with your logical model
Design CRUD tables
CRUD Apps in R and Shiny
Check out R_workshop/app.R
Use {rhandsontable}, {reactable}, or {DT} to display selectable/editable tables
Control user submissions through shiny::actionButtons
Validate user input using functions, such as shiny::req, shiny::validate, shinyfeedback::feedback, and shiny::showNotification
A CRUD app could have the following key steps:
Read in data
Join and transform data into user table(s), using a function
Make your user table to a reactive object, using reactiveValues
Upon user submission, there are two subprocesses: 1) Transform submission back into original raw table structure, using a function, then write to data, and 2) Update your reactive user table with submission